<html>
<head><meta charset="utf-8"><title>debugger experience · wg-async-foundations · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/index.html">wg-async-foundations</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html">debugger experience</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="232019406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019406">(Mar 26 2021 at 19:27)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> I was chatting a bit with Shane after today's session and I realized that something which might be nice to write a story about</p>



<a name="232019414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019414">(Mar 26 2021 at 19:27)</a>:</h4>
<p>since you love gdb so much</p>



<a name="232019425"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019425" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019425">(Mar 26 2021 at 19:27)</a>:</h4>
<p>is that when you are running a service today and you use gdb and you type <code>thread list</code> or whatever</p>



<a name="232019434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019434">(Mar 26 2021 at 19:27)</a>:</h4>
<p>you get the random worker threads</p>



<a name="232019445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019445">(Mar 26 2021 at 19:27)</a>:</h4>
<p>you don't get a list of the async tasks that are active</p>



<a name="232019476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019476">(Mar 26 2021 at 19:27)</a>:</h4>
<p>I believe gdb has some kind of special integration for goroutines</p>



<a name="232019490"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019490" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019490">(Mar 26 2021 at 19:27)</a>:</h4>
<p>(as a point of contrast)</p>



<a name="232019549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019549">(Mar 26 2021 at 19:28)</a>:</h4>
<p>I have no idea if other languages besides go have a better story here</p>



<a name="232019935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019935">(Mar 26 2021 at 19:31)</a>:</h4>
<p>In my memory all other runtimes had hand-rolled debugging story that did not involve gdb.</p>



<a name="232019958"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232019958" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232019958">(Mar 26 2021 at 19:31)</a>:</h4>
<p>maybe one exception being Windows' Fibers stuff.</p>



<a name="232020045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232020045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232020045">(Mar 26 2021 at 19:32)</a>:</h4>
<p>(Which could be another interesting place to look at – how windows debuggers handle fibers)</p>



<a name="232021411"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232021411" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232021411">(Mar 26 2021 at 19:44)</a>:</h4>
<p>To be clear: i don’t love gdb. I loved GHS Multi</p>



<a name="232021444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232021444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232021444">(Mar 26 2021 at 19:44)</a>:</h4>
<p>And maybe I should find out if i can get a personal copy. :)</p>



<a name="232021561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232021561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Andrew Chin (eminence) <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232021561">(Mar 26 2021 at 19:45)</a>:</h4>
<p>(suddenly i wonder how well TotalView works with rust code)</p>



<a name="232024029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232024029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232024029">(Mar 26 2021 at 20:03)</a>:</h4>
<p>Some way to observe the list of async tasks definitely seems like an operation that a user would like to have available, in any case.</p>



<a name="232024072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232024072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> pnkfelix <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232024072">(Mar 26 2021 at 20:03)</a>:</h4>
<p>so its a good user story to tell.</p>



<a name="232030298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232030298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Andrew Chin (eminence) <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232030298">(Mar 26 2021 at 20:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="222286">Andrew Chin (eminence32)</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/debugger.20experience/near/232021561">said</a>:</p>
<blockquote>
<p>(suddenly i wonder how well TotalView works with rust code)</p>
</blockquote>
<p>very badly, it seems.  (totalview is a debugger for HPC codes on linux, and is what's used at my company for some things)</p>



<a name="232076513"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232076513" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232076513">(Mar 27 2021 at 09:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="123586">nagisa</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/debugger.20experience/near/232019935">said</a>:</p>
<blockquote>
<p>In my memory all other runtimes had hand-rolled debugging story that did not involve gdb.</p>
</blockquote>
<p>yes</p>



<a name="232076956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232076956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232076956">(Mar 27 2021 at 09:15)</a>:</h4>
<p>that's kind of shiny future</p>



<a name="232077025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232077025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232077025">(Mar 27 2021 at 09:16)</a>:</h4>
<p>the story I wanted to tell is probably <a href="https://github.com/rust-lang/wg-async-foundations/issues/75">https://github.com/rust-lang/wg-async-foundations/issues/75</a></p>



<a name="232077028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232077028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232077028">(Mar 27 2021 at 09:16)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> <span aria-label="point up" class="emoji emoji-1f446" role="img" title="point up">:point_up:</span></p>



<a name="232264547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232264547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232264547">(Mar 29 2021 at 13:07)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116083">pnkfelix</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/debugger.20experience/near/232024029">said</a>:</p>
<blockquote>
<p>Some way to observe the list of async tasks definitely seems like an operation that a user would like to have available, in any case.</p>
</blockquote>
<p>I have heard this exact request from a few different people so I think this would be really valuable to capture.</p>



<a name="232300710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232300710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232300710">(Mar 29 2021 at 17:02)</a>:</h4>
<p>FYI, I wrote that up in <a href="https://github.com/rust-lang/wg-async-foundations/pull/106">https://github.com/rust-lang/wg-async-foundations/pull/106</a>.</p>



<a name="232300882"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232300882" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232300882">(Mar 29 2021 at 17:03)</a>:</h4>
<p><span class="user-mention" data-user-id="116083">@pnkfelix</span> if you think the story should go differently, I'd be happy to collaborate on it with you!</p>



<a name="232313211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232313211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232313211">(Mar 29 2021 at 18:24)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> rock on!</p>



<a name="232340371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232340371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Daniel Paoliello <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232340371">(Mar 29 2021 at 21:37)</a>:</h4>
<p>I've been thinking about this for Rust support in WinDbg, and I feel like there's two other things to capture - once you have a task it'd be nice to be able to ask two questions: 1) "how did I get here?" (i.e., reconstruct the backtrace as if this was a synchronous call) and 2) "what is this waiting on?" (i.e., the chain of waiting tasks).</p>



<a name="232606878"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/debugger%20experience/near/232606878" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/debugger.20experience.html#232606878">(Mar 31 2021 at 15:02)</a>:</h4>
<p>That's great feedback <span class="user-mention" data-user-id="391982">@Daniel Paoliello</span>, thanks! I think since both of those questions kind of require you to already be able to inspect a task, I think I should probably write a different story for that.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>